<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

</body>
<script>

    /*返回promise的api
        new Promise((reslove,reject)=>{})
            返回的promise的状态跟执行器的执行过程有关
            当执行器的reslove(val)被调用 返回的promise会是成功状态 持有的值是val
            当执行器的reject(val)被调用 返回的promise会是失败状态 持有的值是val
            当执行器抛异常 返回的promise会是失败状态 持有的值是异常原因

        Promise.prototype.then(()=>{},()=>{})
        Promise.prototype.catch(()=>{})
             返回的promise的状态跟对应回调的执行结果有关;当对应的回调还没有执行的时候返回的是初始化状态的promise
             当对应的回调执行后;返回的promise的状态会产生改变
                当回调返回一个非promise的值 then返回的promise变为成功状态 持有的值就是回调返回的值
                当回调返回一个promise then返回的promise变为同等状态 持有的值就是回调返回的promise持有的值
                当回调抛异常 返回的promise会是失败状态 持有的值是异常原因

        Promise.resolve(val)
            resolve返回的promise和val有关
                如果val是一个非promise的值  resolve返回的promise是成功状态的 持有的值就是val
                如果val是一个promise resolve返回的promise变为同等状态 持有的值就是val持有的值

        Promise.reject(val)
            一定返回一个失败状态的promise;持有的值就是val(错误原因)

        async函数
            当async函数返回一个非promise的值 那async函数返回的promise变为成功状态 持有的值就是返回的值
            当async函数返回一个promise 那async函数返回的promise变为同等状态 持有的值就是回调返回的promise持有的值
    */


    async function test() {
        try {
            throw new Error("---")
        }catch (e) {
            console.log(e,"++++");
        }
    }
    test()

    /* var promise = test();
     promise.catch((err)=>{
         console.log(err);
     });

     console.log(promise);*/
</script>
</html>